// 导入数据库操作模块
const db = require('../db/index')
// 当前时间
const sd = require('silly-datetime')
// 将token解析成用户信息为JSON
// const expressJWT = require('express-jwt')
const jwt = require('jsonwebtoken')
// 定义密钥
const secretKey = 'get_token'
exports.creatOrder = (req,res)=>{
    // 1、验证token
    // 得到请求头中加密后的token
    const token = req.headers.token;
    // 得到加密前数据 验证token
    try {
        const verifyToken = jwt.verify(token,secretKey)
    } catch (err) {
        // 如果token过期失效 或其他错误
        if(err.name==="UnauthorizedError"){
            return res.send({
                status:401,
                message:'无效的token'
            })
        }
        // res.send({
        // status:500,
        // message:'未知错误'}) 
    }     
    // 如果token错误 将不会提交订单 因为购买人都错了 token正确时才会生成用户的订单
    // 2、生成订单编号，并将订单存入数据库
    // 得到订单总价 订单地址 订单中商品
    const order_price=req.body.order_price;
    const order_addr=req.body.order_addr;
    // const goods = req.body.goods;//[ { id: 1, num: 1, price: 89 }]存入为[object,Object]错误
    const goods = JSON.stringify(req.body.goods);
    // 支付状态 这里存数据库时统一未支付
    const payStatus = false;
    // 根据时间生成唯一订单编号
    let now = new Date();
    let month=now.getMonth()+1;
    let day = now.getDay();
    let hour = now.getHours();
    let minutes = now.getMinutes();
    let seconds = now.getSeconds();
    // 个位数补齐十位
    function setTimeDateFmt(s){return s<10?'0'+s:s};
    month=setTimeDateFmt(month);
    day = setTimeDateFmt(day);
    hour = setTimeDateFmt(hour);
    minutes = setTimeDateFmt(minutes);
    seconds = setTimeDateFmt(seconds);
    let order_number=now.getFullYear().toString()+month.toString()+day+hour+minutes+seconds+(Math.round(Math.random()*1000000)).toString();
    // 得到订单时间
    let order_time=sd.format(new Date(),'YYYY-MM-DD HH:mm:ss')
    // 将订单存到数据库中
    // order_number  order_price  order_addr  goods  payStatus  
    let params ={
        order_number,
        order_price,
        order_addr,
        goods,
        payStatus ,
        order_time
    }
    const sqlStr = 'insert into payorder set ?';
    db.query(sqlStr,params,(err,results)=>{
        // 执行SQL语句失败
        if(err) return res.send(err)
        // 调用res.send将信息响应给客户端
        res.send({
            status:200,
            message:'订单创建成功',
            // 返回订单编号
            order_number:order_number
        })
    })
}